#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>
#include "../lib/Constantes.h"
#include "../lib/Logger.h"
#include "ControladorCentral.h"

#define PROCESS_NAME "CONTROLADOR_CENTRAL"
#define ERROR_ARGS -1

using namespace std;

void log(string message) {
	string name = PROCESS_NAME;
	string msg = name + ": " + message;
	Logger::getInstance()->loggearLog(msg);
}

void debug(string message) {
	string name = PROCESS_NAME;
	string msg = name + ": " + message;
	Logger::getInstance()->loggearDebug(msg);
}

void sync(string message) {
	string name = PROCESS_NAME;
	string msg = name + ": " + message;
	Logger::getInstance()->loggearDebug(msg);
}

// Generador de personas
int main(int argc, char * argv[]) {
	/* Control de parametros
	 * 1 - cantidad de ascensores del edificio
	 * 2 - cantidad de pisos del edificio
	 * 3 - capacidad
	 * 4 - velocidad
	 * 5 - modo debug
	 * 6 - modo log
	 * 7 - modo synchro
	 * 8 - modo cout
	 */
	if (argc < 8) {
		cout << "Faltan parametros para instanciar el Generador de Ascensores."
				<< endl;
		exit(ERROR_ARGS);
	}
	// Inicializamos el logger
	Logger::getInstance()->setFlags(atoi(argv[5]), atoi(argv[6]), atoi(argv[7]),
			atoi(argv[8]));
	log("Controlador Central empieza a trabajar.");
	ControladorCentral* controlador = new ControladorCentral(atoi(argv[1]),
			atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), atoi(argv[5]),
			atoi(argv[6]), atoi(argv[7]), atoi(argv[8]));
	controlador->start();
	delete (controlador);
	log("Fin del Controlador Central.");
	exit(0);
}
